ExtJS তে ফর্ম তৈরি করা এবং সেগুলির মাধ্যমে ডেটা সাবমিট (submit) করা একটি সাধারণ কাজ, যা বিভিন্ন ফর্ম ফিল্ড এবং ভ্যালিডেশন চেক করার মাধ্যমে ব্যবহারকারীর ইনপুট সংগ্রহ করতে সহায়ক। ExtJS এর Ext.form.Panel
এবং Ext.form.field
কম্পোনেন্ট ব্যবহার করে খুব সহজে ফর্ম তৈরি এবং ডেটা সাবমিট করা যায়। এছাড়াও, ফর্ম ভ্যালিডেশন নিশ্চিত করার জন্য ExtJS শক্তিশালী মেকানিজম প্রদান করে।
প্রথমে, একটি সাধারণ ফর্ম তৈরি করা যাক যেখানে ব্যবহারকারী নাম এবং ইমেইল ইনপুট করবে। ফর্মটি সাবমিট করার সময় আমরা ডেটা সার্ভারে পাঠাবো।
Ext.create('Ext.form.Panel', {
title: 'User Information Form',
width: 300,
bodyPadding: 10,
renderTo: Ext.getBody(),
items: [
{
xtype: 'textfield',
name: 'name',
fieldLabel: 'Name',
allowBlank: false, // নাম ফিল্ড ফাঁকা রাখা যাবে না
minLength: 3, // কমপক্ষে ৩ অক্ষর
maxLength: 50 // সর্বোচ্চ ৫০ অক্ষর
},
{
xtype: 'textfield',
name: 'email',
fieldLabel: 'Email',
vtype: 'email', // ইমেইল ভ্যালিডেশন
allowBlank: false
}
],
buttons: [
{
text: 'Submit',
handler: function() {
var form = this.up('form').getForm();
if (form.isValid()) {
form.submit({
url: '/submit', // ফর্মের ডেটা কোথায় পাঠানো হবে
method: 'POST',
success: function(form, action) {
Ext.Msg.alert('Success', 'Form submitted successfully.');
},
failure: function(form, action) {
Ext.Msg.alert('Failed', 'Form submission failed.');
}
});
} else {
Ext.Msg.alert('Invalid', 'Please correct the errors in the form.');
}
}
}
]
});
এখানে:
xtype: 'textfield'
: এটি একটি টেক্সট ইনপুট ফিল্ড তৈরি করবে।allowBlank: false
: এটি নিশ্চিত করবে যে, ইনপুট ফিল্ডটি ফাঁকা থাকা যাবে না।minLength
এবং maxLength
: ইনপুটের দৈর্ঘ্য সীমাবদ্ধ করতে ব্যবহৃত হয়।vtype: 'email'
: ইমেইল ফিল্ডের জন্য একটি বিল্ট-ইন ভ্যালিডেশন।form.submit
: ফর্মের ডেটা সাবমিট করতে ব্যবহৃত হয়, এখানে একটি POST রিকোয়েস্ট সার্ভারে পাঠানো হবে।ফর্ম ভ্যালিডেশন ব্যবহারকারীর ইনপুট যাচাই করার একটি প্রক্রিয়া। ExtJS তে বিভিন্ন ধরনের বিল্ট-ইন ফর্ম ভ্যালিডেশন রয়েছে যা ফিল্ডের ইনপুট চেক করতে ব্যবহৃত হয়।
Ext.create('Ext.form.Panel', {
title: 'Registration Form',
width: 400,
bodyPadding: 10,
renderTo: Ext.getBody(),
items: [
{
xtype: 'textfield',
name: 'username',
fieldLabel: 'Username',
allowBlank: false, // ইনপুট ফিল্ড ফাঁকা রাখা যাবে না
minLength: 3, // ইনপুটের দৈর্ঘ্য ৩ অক্ষরের কম হতে পারবে না
maxLength: 20, // ইনপুটের দৈর্ঘ্য ২০ অক্ষরের বেশি হতে পারবে না
regex: /^[a-zA-Z0-9]+$/, // কেবল alphanumeric চিহ্ন গ্রহণ করবে
invalidText: 'Username should contain only alphanumeric characters.'
},
{
xtype: 'textfield',
name: 'password',
fieldLabel: 'Password',
inputType: 'password', // পাসওয়ার্ড ফিল্ড তৈরি করবে
allowBlank: false,
minLength: 6, // পাসওয়ার্ডের দৈর্ঘ্য কমপক্ষে ৬
vtype: 'alphanum', // পাসওয়ার্ডে অক্ষর এবং সংখ্যা থাকবে
invalidText: 'Password must be at least 6 characters.'
},
{
xtype: 'textfield',
name: 'email',
fieldLabel: 'Email',
vtype: 'email', // ইমেইল ভ্যালিডেশন
allowBlank: false
}
],
buttons: [
{
text: 'Submit',
handler: function() {
var form = this.up('form').getForm();
if (form.isValid()) {
Ext.Msg.alert('Valid', 'The form is valid. Ready to submit.');
// এখানে ফর্ম ডেটা সাবমিট করা যাবে
} else {
Ext.Msg.alert('Invalid', 'Please fix the errors in the form.');
}
}
}
]
});
এখানে:
allowBlank: false
: ফিল্ডের জন্য ভ্যালিডেশন নিশ্চিত করা হচ্ছে যে এটি ফাঁকা থাকলে ফর্ম সাবমিট হবে না।minLength
, maxLength
: দৈর্ঘ্য সীমাবদ্ধ করতে ব্যবহৃত হয়।regex
: ব্যবহারকারী একটি নির্দিষ্ট প্যাটার্ন অনুসরণ করতে বাধ্য হয় (যেমন কেবল অক্ষর এবং সংখ্যা)।vtype: 'email'
: ইমেইল ভ্যালিডেশন নিশ্চিত করা।যদি আপনি কোনো কাস্টম ভ্যালিডেশন চাইতে পারেন, তবে আপনি কাস্টম ভ্যালিডেশন ফাংশন তৈরি করতে পারবেন।
Ext.create('Ext.form.Panel', {
title: 'Custom Validation Form',
width: 400,
bodyPadding: 10,
renderTo: Ext.getBody(),
items: [
{
xtype: 'textfield',
name: 'age',
fieldLabel: 'Age',
allowBlank: false,
validator: function(value) {
if (value < 18) {
return 'Age must be 18 or older';
}
return true; // valid
}
}
],
buttons: [
{
text: 'Submit',
handler: function() {
var form = this.up('form').getForm();
if (form.isValid()) {
Ext.Msg.alert('Valid', 'Form is valid. Ready to submit.');
// এখানে ফর্ম ডেটা সাবমিট করা যাবে
} else {
Ext.Msg.alert('Invalid', 'Please correct the errors in the form.');
}
}
}
]
});
এখানে, validator
ফাংশন ব্যবহার করে একটি কাস্টম ভ্যালিডেশন যুক্ত করা হয়েছে, যা বয়সের ইনপুটের জন্য ১৮ এর কম হলে ত্রুটি বার্তা দেখাবে।
ফর্ম ভ্যালিডেশন সফল হলে আপনি ফর্মের ডেটা AJAX অথবা সার্ভারের মাধ্যমে সাবমিট করতে পারেন। ExtJS এর form.submit()
মেথড এটি সম্পন্ন করতে ব্যবহৃত হয়।
form.submit({
url: '/submit',
method: 'POST',
success: function(form, action) {
Ext.Msg.alert('Success', 'Form submitted successfully');
},
failure: function(form, action) {
Ext.Msg.alert('Failed', 'Form submission failed');
}
});
এখানে:
url
: ফর্মের ডেটা কোথায় পাঠানো হবে।method
: HTTP মেথড (POST, GET ইত্যাদি) ব্যবহার করা হবে।success
এবং failure
: ফর্ম সাবমিট সফল হলে অথবা ব্যর্থ হলে কলব্যাক ফাংশন।Ext.form.Panel
ব্যবহার করা হয়, যেখানে বিভিন্ন ফর্ম ফিল্ড যেমন textfield
, datefield
, checkbox
ইত্যাদি থাকে।allowBlank
, minLength
, regex
, vtype
, এবং কাস্টম ভ্যালিডেশন ফাংশন ব্যবহার করা যায়।form.submit()
মেথড ব্যবহার করা হয়, যা AJAX বা HTTP মেথডের মাধ্যমে ডেটা সার্ভারে পাঠায়।এই বৈশিষ্ট্যগুলোর মাধ্যমে আপনি একটি পূর্ণাঙ্গ এবং ব্যবহারকারী-বান্ধব ফর্ম তৈরি করতে পারবেন।